strcmp 指令用於比較字串內容的異同,例如:
由上例得知,out1 的值是 0,表示 str1 和 str2 內容不相等;out2 的值是 1,表示 str1 和 str3 內容相等。
strncmp 指令用於比較字串的前 n 個字元,例如:
strcmp 及 strncmp 指令亦可用於字串異質陣列,例如:
findstr 指令可以尋找在某一個長字串中的子字串(Substrings),並傳回其起始位置,例如:
strrep 指令用於字串尋找及代換,例如:
strtok 指令可根據一給定的分界字元(Delimiting Characters),將一字串拆解成數個字串,預設的分界字元為空白字元,例如:
在上例中,strvcat 指令的作用是將拆解下來的字串內容(即儲存在字串變數 chopped 中) 加到二維字元陣列 parsed 中。
一般而言,若是在 MATLAB 指令視窗或是程式碼直接指定含有大五碼的字串,MATLAB 7.x 會直接使用 unicode 來儲存內碼。但是如果直接從檔案讀取文字,則 MATLAB 會對每一個中文文字拆成兩個 byte 來讀入,造成「凸槌」。舉例來說,在本章範例程式目錄內,有一檔案為「big5.txt」,其內容為「我是Roger」,我們可用下列程式將此檔案內容讀至一個字串變數:
(有關讀取此文字檔之方法,可詳見本書第十八章「檔案輸出及輸入」。)在上述範例中,我們將字串變數 line 印出,發覺前面兩個中文字已經變成亂碼,而且line 的長度是 9,而不是 7 ,欲詳查原因,我們可用 double 指令將之轉成 ASCII 碼,就能一目了然:
原來 MATLAB 在讀入中文字串時,將每一個中文字的 2-byte 分開來讀,造成原先的兩個中文字變成四個字串元素。(若使用 MATLAB 6.x,雖然外觀看不出來,但內部儲存方式仍是將一個中文字看成兩個單原來儲存。)欲解決此問題,在 MATLAB 7.x 可用 native2unicode 指令,來將中文的 2-byte 「結合」在一起,例如:
因此,如果您的程式需要常常讀取中文檔案(或是其它 double bytes 的文字),native2unicode指令將是你的最佳伙伴!
若要在 MATLAB 5.3 或 6.x 執行上述範例,請將 native2unicode(line, 'big5') 改成 xlate(line) ,即可得到同樣的結果。
「xlate」指令是筆者向美國總公司查詢如何解決上述問題所得到的解答,在 MATLAB 5.3 版後才有支援,但在 MATLAB 7.x 已經功成身退。此指令是 「undocumented」,因此在 MATLAB 線上支援或紙本手冊都未提到。
MATLAB程式設計:入門篇